/**
 * 初始化
 */
$(function () {
    // 表单验证和提交处理
    $("#scoreForm").validate({
        submitHandler: function (form) {
            saveScore();
        }
    });
    $('.fixed-table-pagination').show();
    // 初始化表格
    $('#scoreTb').bootstrapTable({
        method: 'GET',
        url: '/webapi/score/list', // 初始加载地址，这里假设是用于加载所有成绩数据的接口
        striped: true,
        cache: false,
        pagination: true,
        sortable: false,
        sidePagination: "server", // 后端分页
        pageNumber: 1,
        pageSize: 3,
        pageList: [3, 6, 10, 20, 100],
        queryParams: function (params) {
            return {
                pageSize: params.limit,
                pageNum: params.offset / params.limit + 1
            };
        },
        columns: [{
            checkbox: true,
        }, {
            field: 'id',
            title: '学生ID'
        }, {
            field: 'studentNo',
            title: '学生学号'
        }, {
            field: 'cno',
            title: '课程号'
        }, {
            field: 'score',
            title: '课程成绩'
        },{
            field: 'handle',
            title: '操作',
            formatter: operateFormatter // 自定义操作列的格式化函数
        }]
    });
    $('#allScore').hide();
    // 点击按钮刷新表格
    $('#allScore').click(function () {
        $('#scoreTb').bootstrapTable('refresh');
    });
    // 监听学号输入框失去焦点事件
    $('#studentNo').on('blur', function() {
        var studentNo = $(this).val().trim();
        if (studentNo !== '') {
            checkDuplicateNo(studentNo);
        }
    });
    // 监听课程输入框失去焦点事件
    $('#cno').on('blur', function() {
        var studentNo = $('#studentNo').val().trim();
        var cno = $(this).val().trim();
        if (studentNo !== '' && cno !== '') {
            checkDuplicate(studentNo, cno);
        }
    });
});
$(document).ready(function() {
    // 发送AJAX请求获取课程列表
    $.ajax({
        url: 'webapi/course/list',
        type: 'GET',
        dataType: 'json',
        success: function(data) {
            console.log(data.rows);
            if (data && data.rows.length>0) {
                var $courseSelect = $('#cno');
                $courseSelect.empty();
                $courseSelect.append('<option value="">请选择课程</option>');
                $.each(data.rows, function(index, course) {
                    $courseSelect.append('<option value="' + course.cno + '">' + course.cname + '</option>');
                });
            }
        },
        error: function(xhr, status, error) {
            console.error('获取课程数据失败:', status, error);
        }
    });
});
/**
 * 处理后端返回的操作结果
 * @param {Object} result 后端返回的结果对象，包含code和msg字段
 */
function handleResponse(result) {
    if (result.code === 1 || result.length > 0) {
        console.log('操作成功');
    } else {
        console.error('操作失败');
    }
}
/**
 * 查询学生信息，并更新Bootstrap表格显示
 */
function searchScore() {
    var cno = $("#searchInput").val().trim(); // 获取输入课程号
    if (cno !== "") {
        $.ajax({
            url: "/webapi/score/search", // 发送查询请求的 URL
            method: "GET",
            data: {
                cno: cno // 修改此处为正确的参数名，与后端接口的@RequestParam对应
            }
        }).done(function (response) {
            handleResponse(response);
            if (response.length > 0) {
                // 更新Bootstrap表格数据
                $('#scoreTb').bootstrapTable('load', {
                    total: response.length,
                    rows: response
                });
                $('#searchModal').modal('hide'); // 关闭模态框
                $('#allScore').show();
                $('.fixed-table-pagination').hide(); // 隐藏分页
            } else {
                // 如果没有查询到结果，显示空数据
                $('#scoreTb').bootstrapTable('removeAll');
                $('#searchModal').modal('hide'); // 关闭模态框
                $('#allScore').show();  //显示查询所有按钮
                $('.fixed-table-pagination').hide();    //隐藏分页，显示所有相关学生信息
                alert("没有找到相关课程成绩!!!");
            }
        }).fail(function (xhr, textStatus, errorThrown) {
            // 处理请求失败的情况
            console.error("Error:", textStatus, errorThrown);
            alert("查询失败，请稍后重试或联系管理员！");
        });
    }
}
/**
 * 预新增
 */
function preAdd(){
    $('#id').val(0);    //提示新增
    $('#scoreForm')[0].reset();
}
/**
 * 验证新增学生时学号和课程是否重复
 * @param studentNo
 * @param cno
 */
function checkDuplicate(studentNo, cno) {
    var id = $('#id').val();
    if (id < 1) {
        $.ajax({
            url: "/webapi/score/checkDuplicate",
            method: "POST",
            contentType: "application/json", // 设置内容类型为 JSON
            data: JSON.stringify({ studentNo: studentNo, cno: parseInt(cno) }), // 将 cno 转换为整数
            success: function (response) {
                if (response.studentExists) {
                    if (response.courseExists) {
                        alert("该学生的该课程成绩已存在，不能重复新增！");
                        $('#saveBtn').prop('disabled', true); // 禁用保存按钮
                    } else {
                        $('#saveBtn').prop('disabled', false); // 启用保存按钮
                    }
                } else {
                    alert("学号不存在，请输入有效的学号！");
                    $('#saveBtn').prop('disabled', true); // 禁用保存按钮
                }
            },
            error: function () {
                alert("检查学号和课程时出错，请稍后重试！");
            }
        });
    }
}
/**
 * 验证新增学生时学号是否重复
 * @param studentNo
 */
function checkDuplicateNo(studentNo) {
    var id = $('#id').val();
    if (id < 1) {
        $.ajax({
            url: "/webapi/score/checkDuplicateNo",
            method: "POST",
            data: { studentNo: studentNo },
            success: function (response) {
                if (response) {
                    // 学号已存在，可以继续新增
                    $('#saveBtn').prop('disabled', false); // 启用保存按钮
                } else {
                    // 学号不存在，禁止保存
                    alert("学号不存在，请输入已存在的学号！");
                    $('#saveBtn').prop('disabled', true); // 禁用保存按钮
                }
            },
            error: function () {
                alert("检查学号重复时出错，请稍后重试！");
            }
        });
    }
}
/**
 * 保存学生信息（新增或更新）
 */
function saveScore() {
    var formData = {};
    $("#scoreForm").serializeArray().forEach(function(field) {
        formData[field.name] = field.value;
    });
    var id = $('#id').val();
    if (id > 0) { // 更新已有记录
        $('#saveBtn').prop('disabled', false); // 启用保存按钮
        var result = confirm("确定保存更新信息吗？");
        if (result) {
            $.ajax({
                url: "/webapi/score/updateall",
                method: "PUT",
                contentType: "application/json",
                data: JSON.stringify(formData),
                success: function (response) {
                    handleResponse(response);
                    $('#myModal').modal('hide');
                    $("#scoreTb").bootstrapTable('refresh');
                },
                error: function () {
                    alert("保存失败，请稍后重试！");
                }
            });
        }
    } else { // 新增记录
        $.ajax({
            url: "/webapi/score/add",
            method: "POST",
            contentType: "application/json",
            data: JSON.stringify(formData),
            success: function (response) {
                if (response.status === "error") {
                    alert(response.message);
                } else {
                    $('#myModal').modal('hide');
                    $("#scoreTb").bootstrapTable('refresh');
                }
            },
            error: function () {
                alert("保存失败，请稍后重试！");
            }
        });
    }
}
// 自定义操作列的格式化函数
function operateFormatter(value, row, index) {
    // 返回操作按钮的HTML代码
    return [
        '<button class="btn btn-sm btn-primary mr-2" onclick="editScore(' + row.id + ')">更新</button>',
        "<svg style='width: 20px; height: 20px; position: relative; top: 5px; left: 15px; cursor: pointer;' onclick='deleteScore(" + row.id + ");' t=\"1715694995313\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1647\" width=\"200\" height=\"200\"><path d=\"M781.28 851.36a58.56 58.56 0 0 1-58.56 58.56H301.28a58.72 58.72 0 0 1-58.56-58.56V230.4h538.56z m-421.6-725.92a11.84 11.84 0 0 1 12-12h281.28a11.84 11.84 0 0 1 12 12V160H359.68zM956.8 160H734.72v-34.56a81.76 81.76 0 0 0-81.76-81.76H371.68a82.08 82.08 0 0 0-81.76 81.76V160H67.2a35.36 35.36 0 0 0 0 70.56h105.12v620.8a128.96 128.96 0 0 0 128.96 128.96h421.44a128.96 128.96 0 0 0 128.96-128.96V230.4H956.8a35.2 35.2 0 0 0 35.2-35.2 34.56 34.56 0 0 0-35.2-35.2zM512 804.16a35.2 35.2 0 0 0 35.2-35.36V393.92a35.2 35.2 0 1 0-70.4 0V768.8a35.2 35.2 0 0 0 35.2 35.36m-164.32 0a35.36 35.36 0 0 0 35.36-35.36V393.92a35.36 35.36 0 1 0-70.56 0V768.8a36.32 36.32 0 0 0 35.2 35.36m328.64 0a35.36 35.36 0 0 0 35.2-35.36V393.92a35.36 35.36 0 1 0-70.56 0V768.8a35.36 35.36 0 0 0 35.36 35.36\" fill=\"#D81E06\" p-id=\"1648\"></path></svg>"
        ].join('');
}
/**
 * 更新学生信息的事先查询
 * @param id
 */
function editScore(id) {
    $('#myModal').modal('show');    //打开模态框
    // $('#editId').show(); // 显示ID字段
    $.ajax({
        url: "/webapi/score/get/" + id,
        method: "GET"
    }).done(function (rs) {
        $('#id').val(rs.id);
        $('#studentNo').val(rs.studentNo);
        $('#cno').val(rs.cno);
        $('#score').val(rs.score);
    });
    // 在模态框关闭时，重新加载表格数据
    $('#myModal').on('hidden.bs.modal', function () {
        $('#scoreTb').bootstrapTable('refresh');
        // $('#editId').hide(); // 隐藏ID字段
    });
}
/**
 * 删除学生信息
 * @param id 学生id
 */
function deleteScore(id) {
    // 显示确认对话框
    var result = confirm("您确定要删除该学生成绩信息吗？");
    // 如果用户确认删除，则进行 AJAX 请求
    if (result) {
        $.ajax({
            url: "/webapi/score/delete/" + id, 
            method: "DELETE"
        }).done(function (response) {
            handleResponse(response);
            //重新加载表格数据
            $('#scoreTb').bootstrapTable('refresh');
        });
    }   //end if
}
$(function () {
    $('#allScore').on('click', function () {
        $(this).hide(); // 隐藏查询所有按钮
    });
});
